package com.edou.member.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.edou.base.page.PageResult;
import com.edou.member.dto.MemberCollectionCondition;
import com.edou.member.entity.MemberCollection;

/**
 * 会员收藏
 * @creator     
 * @create-time 2016/4/18 17:15:31
 * @email admin@edou.com
 * @company www.edou.com
 * @version 1.0
 */
public interface IMemberCollectionService {

	/**
	 * 查询所有会员收藏
	 */
	List<MemberCollection> listMemberCollectionAll();

	/**
	 * 分页查询
	 * @param pageResult 分页对象
	 * @param condition 查询条件类
	 */
	void listMemberCollectionByPage(PageResult<MemberCollection> pageResult,MemberCollectionCondition condition);

	/**
	 * 根据ID查询
	 * @param id 主键
	 * @return 会员收藏
	 */
	MemberCollection  getMemberCollectionById(Long id);
	
	/**
	 * 查询当前会员收藏的总数
	 * @param condition 查询条件类
	 * @return 总条数
	 */
	int getMemberCollectionByMemberIdCount(String memberId);
	
	/**
	 * 查询当前文章收藏的总数
	 */
	int getMemberCollectionByObjectIdCount(String objectId);
	
	/**
	 * 根据实体ID、类型与会员ID查询是否已经收藏了该实体
	 * @param objectId
	 * @param objectType
	 * @param memberId
	 * @return
	 */
	MemberCollection getMemberCollectionByObjectIdTypeMemberId(String objectId, Integer objectType, String memberId);

	/**
	 * 新增
	 * @param item 会员收藏
	 */
	void add(MemberCollection item);

	/**
	 * 修改
	 * @param item 会员收藏
	 */
	void update(MemberCollection item);

	/**
	 * 根据ID集合批量删除
	 * @param ids ID集合
	 */
	void delByIds(String[] ids);
	
	/**
	 * 根据主键ID查询
	 */
	void delById(Long id);
	
	/**
	 * 取消收藏
	 * @param objectId
	 */
	void cancelCollection(String objectId,Integer objectType);
	
	/**
	 * 根据收藏对象ID、收藏类型、收藏会员ID进行取消收藏
	 */
	void delCollection(@Param("objectId")String objectId,@Param("objectType")Integer objectType,@Param("memberId")String memberId);

	/**
	 * 根据收藏对象的id和type进行查询
	 * @param objectId
	 * @param objectType
	 * @return
	 */
	void listMemberCollectionByObjectIdAndObjectTypePage(PageResult<MemberCollection> pageResult,MemberCollectionCondition condition);
	
	/**
	 * 根据条件查询数据
	 */
	List<MemberCollection> listMemberCollectionCondition(MemberCollectionCondition condition);
}